package org.ruoyi.interview.service;

import org.ruoyi.common.mybatis.core.page.PageQuery;
import org.ruoyi.common.mybatis.core.page.TableDataInfo;
import org.ruoyi.interview.domain.bo.InterviewQuestionFavoriteBo;
import org.ruoyi.interview.domain.vo.InterviewQuestionFavoriteCategoryVo;
import org.ruoyi.interview.domain.vo.InterviewQuestionFavoriteVo;

import java.util.List;

/**
 * 面试题收藏Service接口
 *
 * @author ruoyi
 */
public interface IInterviewQuestionFavoriteService {

    /**
     * 查询面试题收藏
     *
     * @param favoriteId 收藏主键
     * @return 面试题收藏
     */
    InterviewQuestionFavoriteVo selectInterviewQuestionFavoriteById(Long favoriteId);

    /**
     * 查询面试题收藏列表
     *
     * @param bo 面试题收藏业务对象
     * @return 面试题收藏集合
     */
    List<InterviewQuestionFavoriteVo> selectInterviewQuestionFavoriteList(InterviewQuestionFavoriteBo bo);

    /**
     * 查询面试题收藏列表
     *
     * @param bo 面试题收藏业务对象
     * @param pageQuery 分页参数
     * @return 面试题收藏集合
     */
    TableDataInfo<InterviewQuestionFavoriteCategoryVo> selectInterviewQuestionFavoriteList(InterviewQuestionFavoriteBo bo, PageQuery pageQuery);

    /**
     * 查询面试题收藏列表及题目详情
     *
     * @param bo 面试题收藏业务对象
     * @param pageQuery 分页参数
     * @return 面试题收藏集合
     */
    TableDataInfo<InterviewQuestionFavoriteCategoryVo> selectInterviewQuestionFavoriteQuestionList(InterviewQuestionFavoriteBo bo, PageQuery pageQuery);

    /**
     * 新增面试题收藏
     *
     * @param bo 面试题收藏业务对象
     * @return 结果
     */
    Boolean insertInterviewQuestionFavorite(InterviewQuestionFavoriteBo bo);

    /**
     * 修改面试题收藏
     *
     * @param bo 面试题收藏业务对象
     * @return 结果
     */
    Boolean updateInterviewQuestionFavorite(InterviewQuestionFavoriteBo bo);

    /**
     * 批量删除面试题收藏
     *
     * @param favoriteIds 需要删除的收藏主键集合
     * @return 结果
     */
    Boolean deleteInterviewQuestionFavoriteByQuestionId(Long favoriteIds);

    /**
     * 根据用户ID和题目ID查询收藏记录
     *
     * @param userId 用户ID
     * @param questionId 题目ID
     * @return 收藏记录
     */
    InterviewQuestionFavoriteVo selectInterviewQuestionFavoriteByUserIdAndQuestionId(Long userId, Long questionId);
}
